﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using CapaNegocio;

public partial class abmOrdenesTrabajo_ConsultarDesvios : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["UsuLogin"] == null)
        {
            Response.Redirect("../Default.aspx", true);
        }
        else
        {

            if (!IsPostBack)
            {
                Usuario usu = ((Usuario)(Session["UsuLogin"]));
                Label1.Text = usu.Apellido + ", " + usu.Nombre + " (" + usu.Perfil.Nombre + ")";
            }
            if (Request.QueryString["nroOT"] != null)
            {
                int nro = Convert.ToInt32(Request.QueryString["nroOT"]);

                DataTable dt = new DataTable();

                dt.Columns.Add("DescripcionEtapa");
                dt.Columns.Add("FechaInicio");
                dt.Columns.Add("FechaFin");
                dt.Columns.Add("DiasTototalesEstipulados");
                dt.Columns.Add("FechaInicioReal");
                dt.Columns.Add("FechaFinReal");
                dt.Columns.Add("DiasTotalesReales");

                DataRow dr;
                List<EtapaObra> etapas = EtapaObra.buscarEtapas(nro);
                OrdenTrabajo orden = OrdenTrabajo.buscarOrden(nro);

                fechaInicio.Text = orden.FechaComienzo.ToShortDateString();
                fechaFin.Text = orden.fechaFin();
                nroOT.Text = Convert.ToString(nro);
                totalDiasEstimados.Text = Convert.ToString(orden.diasTotalesEstipulados());
                remanente.Text = Convert.ToString(orden.totalDiasAFavor());
                totalDiasUtilizados.Text = Convert.ToString(orden.totalDiasUtilizados());

                if (etapas != null && etapas.Count > 0)
                {
                    for (int i = 0; i < etapas.Count; i++)
                    {
                        EtapaObra eo = (EtapaObra)etapas[i];
                        dr = dt.NewRow();

                        dr["DescripcionEtapa"] = eo.Etapa.Descripcion;
                        dr["FechaInicio"] = eo.FechaInicio.ToShortDateString();
                        dr["FechaFin"] = eo.FechaFin.ToShortDateString();
                        dr["DiasTototalesEstipulados"] = eo.DiasTotalesEstipulados();
                        dr["FechaInicioReal"] = eo.fechaInicioRealToString();
                        dr["FechaFinReal"] = eo.fechaFinRealToString();
                        dr["DiasTotalesReales"] = eo.DiasTotalesReales();

                        dt.Rows.Add(dr);
                    }
                    grdAsignaciones.DataSource = dt;
                    grdAsignaciones.DataBind();
                }
            }
            else
            {
                Usuario usu = ((Usuario)(Session["UsuLogin"]));

                if (usu.Perfil.Id == 3)
                {
                    Response.Redirect("../MenuConstructor.aspx");
                }
                else
                {
                    Response.Redirect("../MenuAdministrativo.aspx");
                }
                
            }
        }
    }

    protected void grdAsignaciones_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grdAsignaciones.PageIndex = e.NewPageIndex;
        grdAsignaciones.DataBind();
    }

    protected void grdAsignaciones_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dataTable = (DataTable)grdAsignaciones.DataSource;

        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);
            dataView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);

            grdAsignaciones.DataSource = dataView;
            grdAsignaciones.DataBind();
        }
    }

    public string SortExpression
    {
        get { return (ViewState["SortExpression"] == null ? string.Empty : ViewState["SortExpression"].ToString()); }
        set { ViewState["SortExpression"] = value; }
    }
    public string SortDirection
    {
        get { return (ViewState["SortDirection"] == null ? string.Empty : ViewState["SortDirection"].ToString()); }
        set { ViewState["SortDirection"] = value; }
    }
    private string GetSortDirection(string sortExpression)
    {
        if (SortExpression == sortExpression)
        {
            if (SortDirection == "ASC")
                SortDirection = "DESC";
            else if (SortDirection == "DESC")
                SortDirection = "ASC";
            return SortDirection;
        }
        else
        {
            SortExpression = sortExpression;
            SortDirection = "ASC";
            return SortDirection;
        }
    }
 
    protected void botonVolver_Click(object sender, EventArgs e)
    {
        Usuario usu = ((Usuario)(Session["UsuLogin"]));

        if (usu.Perfil.Id == 3)
        {
            Response.Redirect("../MenuConstructor.aspx");
        }
        else
        {
            Response.Redirect("../MenuAdministrativo.aspx");
        }  
    }

    protected void botonVerObra_Click(object sender, EventArgs e)
    {
        Session["OrdenTrabajo"] = OrdenTrabajo.buscarOrden(Convert.ToInt32(Request.QueryString["nroOT"]));
        Response.Redirect("GestionarObra.aspx?view=ot");
    }
}